package com.github.xiaoymin.knife4j.spring.util;

import io.swagger.models.properties.ArrayProperty;
import io.swagger.models.properties.RefProperty;
import io.swagger.models.refs.GenericRef;
import io.swagger.models.refs.RefType;

/**
 * 继承自ArrayProperty的类，用于定义数组类型的引用属性
 * 主要用于Swagger文档中，当一个属性是数组类型且其元素类型是引用类型时
 */
public class ArrayRefProperty extends ArrayProperty {
    // 存储引用类型的相关信息
    private GenericRef genericRef;

    /**
     * 获取引用类型的路径
     *
     * @return 引用类型的路径
     */
    public String get$ref() {
        return genericRef.getRef();
    }

    /**
     * 设置引用类型的路径
     *
     * @param ref 引用类型的路径
     */
    public void set$ref(String ref) {
        this.genericRef = new GenericRef(RefType.DEFINITION, ref);

        // 创建一个RefProperty实例，用于表示数组元素的引用类型
        RefProperty items = new RefProperty();
        // 设置引用类型的路径
        items.set$ref(ref);
        // 设置数组元素的类型为引用类型
        this.items(items);
    }
}
